stata:时间变量格式转换

您所在的位置:网站首页 stata 转码 stata:时间变量格式转换

stata:时间变量格式转换

2024-01-29 01:00| 来源: 网络整理| 查看: 265

stata:时间变量格式转换

时间序列是经济金融类研究最常用的数据类型,时间变量的转换和设定一般是初学者最为头大的问题,本文在这里详尽的展示有关时间变量处理、转换以及格式设定的相关问题,话不多说直奔主题。 第一次使用MarkDown,很多细节问题不是很懂,格式有错乱问题,看官多见谅!

1.时间变量格式问题 格式描述-101%tc毫秒 31dec195923:59:59.99931dec195900:00:00.00031dec195900:00:00.001%td日31-Dec-5901jan1960,Jan-60%tw周1959w121960w11960w2%tm月12,1%tq季度1959q41960q11960q2%th半年1959h21960h11960h2其他格式%ty年最小值为100基期为0最大值为9999%tg整数-101 2.由其他变量转为时间变量

一般导入stata的时间变量都是字符型,需要将其转化为stata可识别的时间变量 此时一般用**date() daily() weekly() monthly quarterly()**等函数将其直接转化为数值型时间变量。

由数值变量转换由字符变量转换mask%tcmdyhms(M, D, Y, h, m, s)clock(string, mask [, topyear])dhms(td, h, m, s)Clock(string, mask [, topyear])%tChms(h, m, s)Cmdyhms(M,D, Y, h, m, s)Cdhms(td, h, m, s)Chms(h, m, s)%tdmdy(month, day, year)date(string, mask [, topyear])Y、M、D的6种组合%twyw(year, week)weekly(string, mask [, topyear])YW WY%tmym(year month)monthly(string, mask [, topyear])YM MY%tqyq(year, quarter)quarterly(string, mask [, topyear])YQ QY%thyh(year, harlyear)harfyearly(string, mask [, topyear])H%tyyearyearly(string, mask [, topyear])Y

备注: 如果时间字符的形式为“1975/12/27”,对应的形式为年月日,YMD,如果顺序发生了改变,后面的mask也对应调整即可。 如果时间字符中有 “-”,"/",“jul"等字符的时候,上述函数可以直接识别,如果不能识别的情况,如表所示:此时上述函数将会失效,通过以下几种方法处理 方法一:利用subinstr()函数将"年”“月"等字符替换为”-""/“等字符,转换为var1和var2的形式,然后即可利用上述函数处理。 方法二:利用split()函数,在"年”"月"处分开,变成year和month,然后利用日期合成函数进行合成。 方法三:利用substr()函数分别提取前对应的年和月,然后利用日期合成函数 方法四:修改数据原始文件中,修改显示格式,然后重新读取。 方法五:直接正则表达式函数,进行提取或者替换。

timevarvar1var2yearmonth2018年7月Jul-18Jul-18201872018年8月Aug-18Aug-18201882018年9月Sep-18Sep-18201892018年10月Oct-18Oct-182018102018年11月Nov-18Nov-182018112018年12月Dec-18Dec-18201812 3.Mask类型

mask设定日期和时间变量的顺序,比如年-月-日或是 日-月-年等。各个命令允许的mask为下列代码的各种组合。

Clock、clock、dateWeekly、monthly、quarterly、 harf yearlyY年份(4位数)Y19Y年份(2位数,代表19*年)19Y20Y年份(2位数,代表20*年)20YD日期Wh小时Mm分钟Qs秒H 4.直接生成时间变量

如生成季度时间变量和月度时间变量 egen qdate=seq(), from(143) to(162),但是这种方式不好用,需要提前知道基期的时间流逝数量,所以非常不方便。以下是常用的方式: gen qdate=tq(1995q4)+_n-1 gen mdate=tm(1998m1)+_n-1 tsset mdate, monthly

格式命令例子%tctc([day-month-year] hh:mm[:ss[.sss]])tc(15jun2004 12:00:00)%tC同%tc。tC(15jun2004 12:00:00)%tdtd(day-month-Year)td(15feb1998),d()%twtw(Year-week)tw(1998w7),w(2002-25)%tmtm(Year-month)tm(12),m(2002-6)%tqtq(Year-quarter)tq(1998q3),q(2002-3)%thth(Year-harf)或者Yearth(1998h1),h(2002-1)%tyty(Year)或者Year1998%tgty(integer)或者integer200 5.时间序列的定义

将时间变量设定为stata能够识别顺序的时间序列 tsset timevar, options optiongs可以根据时间类型选取不同的选项 如:clocktime, daily, weekly, monthly, quarterly, harfyearly, yearly, generic 如果是面板数据命令为:xtset panlevar timevar, options

6.提取时间成分

从时间变量中提取对应的年、月、日、周、季度等时间元素。 但是该系列函数只能对完整年月日形式的时间变量(日期)进行操作,其他形式的时间变量(如年月)需要转化为年月日的形式方可进行操作。

函数说明例子(date=td(5Jul1972))year(date)返回年份(四位数)1972harfyear(date)返回半年数:1,22quarter(date)返回季度:1,2,3,43month(date)返回月份:1,2,3,…,127week(date)返回周数:1,…,5227day(date)返回月内的日期:1,…,315dow(date)返回周内日期:0(星期日),1,2,…,63doy(date)返回年内的日期:1,…,366187 7.根据时间成分合成完整的时间变量(提取时间成分的逆向操作)

已知时间变量的成分,可以对应合成相应的时间变量。 如,已知年Y,月M,可以根据ym(Y,M)合成时间变量

函数时间成分ym(Y ,M )Y,Mmdy(M ,D,Y )Y,M,Dyq(Y,Q)Y,Qyw(Y,W)Y,Wyh(Y ,H )Y ,Hmdyhms(M ,D,Y ,h,m,s)Y,M,D,h,m,sdhms(e d ,h,m,s)date,h,m,shms(h,m,s)h,m,sCmdyhms(M ,D,Y ,h,m,s)date,h,m,s 8.时间序列频率的转换

转换的核心是将不同频率的数据通过中间日期变量(年月日形式)进行转换。 如月m转化为周w,其思想是先将月m转化(dofm(m))为日d,然后在d的基础上在转化wofd(d)=wofd(dofm(m))为周w。

输出输入%td%tw%tm%tq%th%ty%tdwofd()mofd(d)qofd(d)hofd(d)yofd(d)%twdofw(w)mofd(dofw(w))qofd(dofw(w))hofd(dofw(w))yofd(dofw(w))%tmdofm(m)wofd(dofm(m))qofd(dofm(m))hofd(dofm(m))yofd(dofm(m))%tqdofq(q)wofd(dofq(q))mofd(dofq(q))hofd(dofq(q))yofd(dofq(q))%thdofh(q)wofd(dofh(q))mofd(dofh(q))qofd(dofh(q))yofd(dofh(q))%tydofy(q)wofd(dofy(q))mofd(dofy(q))qofd(dofy(q))hofd(dofy(q)) 9.时间变量显示格式

时间序列格式格式设定 日期的显示格式 %d (%td) 定义如下: %[-][t]d 具体项目释义: “”中可包含如下字母或字符 c y m l n d j h q w _ . , : - / ’ !c C Y M L N D J W 定义如下:

参数说明c and C世纪值(个位数不附加/附加0)y and Y不含世纪值的年份(个位数不附加/附加0)m三个英文字母的月份简写(第一个字母大写)M英文字母拼写的月份(第一个字母大写)n and N数字月份(个位数不附加/附加0)d and D一个月中的第几日(个位数不附加/附加0)j and J一年中的第几日(个位数不附加/附加0)h一年中的第几半年 (1 or 2)q一年中的第几季度 (1, 2, 3, or 4)w and W一年中的第几周(个位数不附加/附加0)_display a blank (空格).display a period(句号),display a comma(逗号):display a colon(冒号)-display a dash (短线)/display a slash(斜线)’display a close single quote(右引号)!cdisplay character c (code !! to display an exclamation point) 样式1: 格式例子%td7-Jul-48%tdM_d,_CYJuly7,1948%tdY/M/D1948/7/11%tdM-D-CY07-11-1948%tqCY.q1999.2%tqCY:q1992:02:00%tqCCYY-q1992-02%tq1992q2%twCY,_w2010,48 样式2 格式例子%d11-Jul-48%dDlCY11-Jul-48%dDlY11-Jul-48%dM_d,_CYJuly11,1948%dd_M_CY11-Jul-48%dN/D/Y07/11/48%dD/N/Y11/07/48%dY/N/D1948/7/11%dN-D-CY07-11-1948

** 目前我个人常用的是%tdCCYY-NN-DD 可以等价于 %tdCY-N-D,常用的还有%tdCCYY/NN/DD,也可以根据个人的偏好进行设定。**

主要参考文献

[1] :王群勇,STATA应用高级培训教程讲义, 南开大学数量经济研究所 [2]:Cameron A C, Trivedi P K. Microeconometrics using stata[J]. Indicator, 2009, 2: 47. [3]:Rabe-Hesketh S, Everitt B. Handbook of statistical analyses using stata[M]. Chapman and Hall/CRC, 2003. [4]:连玉君,培训讲义 [5]:陈强. 高级计量经济学及 Stata 应用[M]. 高等教育出版社, 2014.



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3